1. Technical Field
The present invention relates generally to intelligent distribution of software applications in a computer network enterprise environment.
2. Description of the Related Art
It is well-known to connect a set of computers into a computer network to enable users to share applications and resources. A problem arises, however, when multiple users require copies of a given application at the same time, as is typically the case when employees arrive to work at the same time and boot their computers. When this occurs, network utilization promptly reaches a maximum, thus significantly degrading performance. Network bandwidth issues thus are a significant barrier to widespread, efficient deployment of network computing applications.
There have been attempts to solve this bandwidth utilization problem. One approach is to lower network traffic by creating theoretically smaller, yet more optimized applications. This technique is costly and is not always practical. Another approach is to prioritize deployment of a given application to given users. This approach has the obvious disadvantage in that certain users are unable to obtain the application (despite need) until others have received their copies first. Neither approach adequately addresses the bandwidth issue while at the same time preserving the ability of a given user to obtain a copy of a given application when he or she requires that copy.
This problem is addressed by the present invention.
It is an object of the present invention to deploy applications across a network in a manner that conserves bandwidth.
It is a more specific object of this invention to intelligent deploy a given version of an application to given machines in a network based on sets of criteria defined by an administrator to reflect user needs and a current network environment.
A more general object of this invention is to provide a mechanism for controlling the use of network bandwidth through intelligent selection of applications, or application modules, to ensure that the bandwidth is used according to priorities of the network administrator.
It is another object of this invention to intelligently deploy applications, or application modules, to ensure that network bandwidth is used according to administrator-configured priorities.
It is an object of this invention to use information available to a file server to control the server to deliver different representations of the same application, or to assemble application modules dynamically, to minimize network bandwidth utilization.
According to the invention, a server supports multiple versions of its applications, with each version tuned for differing criteria. A small size version may be selected during times of high network usage to minimize congestion, whereas a high performance, though larger, version may be selected during lower traffic conditions. The server may dynamically create the applications to download, selecting modules for the application based on sets of criteria defined by the server administrator to reflect the user needs and current network environment. When a given user receives a lower performance (or lower function) version, the inventive routine may selectively serve a higher performance (or higher function) version as the monitored conditions (namely, time-of-day, network characteristics, etc.) change.
According to a preferred embodiment, a method is provided for deploying an application to client computers across a computer network. The method is operative in a server environment in which given conditions, such as network load and actual or relative time-of-day, are being monitored. The method begins by establishing at least one rule for determining which of a given set of application versions are to be served to a client computer, and by establishing at least one user profile for determining which of a given set of users have a given priority. In response to a request from a client computer to serve the application, the rule is resolved against the monitored conditions and the user profile to select a first application version to serve to the client computer. The first application version is then served to the client computer. Later, a second application version may be selectively served to the client computer as monitored conditions change.
In one embodiment, the first application version has a higher performance metric than the second application version. Alternatively, the first application version has a larger function set as compared to the second application version.
As noted above, the monitored conditions generally include at least one network characteristic. Representative characteristics include, for example, current bandwidth utilization over a given period of time, elapsed time for transfer of a given number of bytes, a prediction of elapsed time to send a given number of bytes based on historical data, network response time for packet delivery, effective transfer rate, event occurrence rate, and network usage ratio to disk and CPU usage.
In accordance with an alternate embodiment, the method assigns a given user a priority value that determines the user""s priority for obtaining a given version of an application. In response to a request to serve the application to a client computer, the routine selects a version of the application based on the priority value and/or a given monitored characteristic of the network, for example, network load. The selected version of the application is then served to the client computer.
The foregoing has outlined some of the more pertinent objects and features of the present invention. These objects should be construed to be merely illustrative of some of the more prominent features and applications of the invention. Many other beneficial results can be attained by applying the disclosed invention in a different manner or modifying the invention as will be described. Accordingly, other objects and a fuller understanding of the invention may be had by referring to the following Detailed Description of the Preferred Embodiment.